package org.edu.modules.kwgl.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import org.edu.modules.kwgl.entity.VeJwBkXuesheng;
import org.edu.modules.kwgl.entity.VeJwChengji;
import com.baomidou.mybatisplus.extension.service.IService;
import org.edu.modules.kwgl.entity.VeJwKaoshi;
import org.edu.modules.kwgl.entity.VeJwKsXuesheng;
import org.edu.modules.scheduleCommon.dto.BasePageDto;
import org.edu.modules.scheduleCommon.dto.KechengStatistics;
import org.edu.modules.scheduleCommon.dto.PassRateStatistics;
import org.edu.modules.scheduleCommon.dto.ScoreAnalysis;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description: 成绩
 * @Author: jeecg-boot
 * @Date: 2021-05-12
 * @Version: V1.0
 */
public interface IVeJwChengjiService extends IService<VeJwChengji> {

    IPage<VeJwChengji> pageDto(BasePageDto page, @Param(Constants.WRAPPER) Wrapper queryWrapper);


    //根据条件查询学生名单
    List<VeJwChengji> getByCondition(VeJwChengji condition);

    /**
     * 计算专业组某学期的及格率
     *
     * @param param 参数
     * @param falid 专业组id
     * @return 及格率
     */
    BigDecimal caleJgl(VeJwChengji param, Integer falid);

    /**
     * 查询所有专业组的所有学期的考试成绩数据
     *
     * @return
     */
    Map<String, JSONObject> queryAllJgl();


    /**
     * 成绩分析
     *
     * @param falId   专业组ID
     * @param specId  专业ID
     * @param gradeId 年级ID
     * @param semId   学期ID
     * @param kcId    课程ID
     */
    List<ScoreAnalysis> scoreAnalysis(Integer falId, Integer specId, Integer gradeId, Integer semId, Integer kcId);

    /**
     * 及格率统计
     *
     * @param falId   专业组ID
     * @param specId  专业ID
     * @param gradeId 年级ID
     * @param semId   学期ID
     * @param xzbId    班级ID
     */
    List<PassRateStatistics> passRateStatistics(Integer falId, Integer specId, Integer gradeId, Integer semId, Integer xzbId);
}
